package main

import "fmt"

//用户密码复杂度验证

func main() {
	var str string
	fmt.Println("请输入用户密码")
	fmt.Scan(&str)
	passwd(str)
}

func passwd(str string) int {
	var st [20]int
	var count [4]int
	for i, j := range str {
		st[i] = int(j)
	}

	for i := 0; i < len(str); i++ { //字符种类统计
		if st[i] < 91 && st[i] > 64 {
			count[0] = 1
		} else if st[i] > 96 && st[i] < 123 {
			count[1] = 1
		} else if st[i] > 47 && st[i] < 58 {
			count[2] = 1
		} else {
			count[3] = 1
		}
	}

	ikun := 0
	for i := 0; i < len(str)-5; i++ { //统计长度等于3的字串重复的数量
		for j := i + 3; j < len(str)-2; j++ {
			if st[i] == st[j] {
				if st[i+1] == st[j+1] {
					if st[i+2] == st[j+2] {
						ikun++
					}
				}
			}
		}
	}
	score := 2        //初始评分等级
	if len(str) > 8 { //判断长度
		score++
	} else {
		fmt.Println("长度小于8")
	}

	if count[0]+count[1]+count[2]+count[3] > 3 { //判断字符种类
		score++
	} else {
		fmt.Println("密码没有由3种以上字符组成")
	}

	if ikun == 0 { //判断字串重复
		score++
	} else {
		fmt.Println("密码有长度超过或等于3的字串重复")
	}

	fmt.Println("评分等级为：", score)
	return score
}
